home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
-
- # Here's the script. It expects a parameter which is the file containing
- # the data in the same form you sent the last data in.
- # It produces 5 perf.xyz files, 5 graph.xyz and 3 graph.[rwc] files.
- # The perf files are the sub tables from the master data, sorted
- # into increasing order. The graph files are executable and invoke xgraph
- # with the appropriate data (embedded in the script).
- # The graph files are invoked by the script.
- # The script also puts the tables onto stdout.
-
- # Expects one parameter which is the name of the file containing
- # the performance data.
-
- # On stdout it produces a table of the results - discarding the lowest and
- # highest, then averaging the remainder.
-
- # Creates graph.dwb, graph.dwt, graph.ewt, graph.ewb, graph.rwb, graph.rwt
- # Which are shell scripts to display the graph of the 5 cases.
- # Also leaves perf.dwb, perf.dwt, perf.ewb, perf.ewt, perf.rwb, perf.rwt.
- # Also creates graph.br, graph.bw, graph.bc which are shell scripts
- # to display the graphs of read, write, create.
-
- # Each graph has an entry 0 0.0 forced in to give an origin. Could be removed.
-
- cat <<'EOF' >/usr/tmp/d.awk$$
- BEGIN { cnt = 0; max=0.0; min=1000.1; maxi=0.0; mini=1000.1;
- ndisks=0; rawefs="?"; async="?"; direct="?";
- nthrd=0; xfrsz=0; stepsz=0; xfrtyp="?";
- sr="?"; mbs=0.0; iops=0.0;
- }
- /^#TITLE/ { ttl1=$2; ttl2=$3; ttl3=$4; ttl4=$5; ttl5=$6;
- }
- / way stripe, step/ { ndisks=$1; stepsz=$6;
- cnt = 0; max=0.0; min=1000.1; maxi=0.0;
- mini=1000.1; rawefs="R"; async="?";
- direct=" "; nthrd=0; xfrsz=0;
- xfrtyp="?"; sr="?"; mbs=0.0; iops=0.0;
- if ( ndisks == 84 ) {
- printf "\n%s %s %s %s %s\n", ttl1, ttl2, ttl3, ttl4, ttl5;
- printf " # # # R/A/D # transfer step OS R/W seq MB/sec IOP/sec\n";
- printf "disks busses LV E/M threads size size rev C rand\n";
- }
- }
- /^$/ {prline();}
- /^mkfs/ {rawefs="E";}
- /^.usr.disk.sio -V -A/ {nthrd=$4; async="A";
- if ( $5 == "-D" ) {
- direct="D";
- }
- }
- /^sequential create/ {prline(); sr="S"; xfrtyp="C"; xfrsz=$4; }
- /^sequential write/ {prline(); sr="S"; xfrtyp="W"; xfrsz=$4; }
- /^sequential read/ {prline(); sr="S"; xfrtyp="R"; xfrsz=$4; }
- /blocks.*KB.*MB.*IO/ {mbs += $8; iops += $11; cnt++;
- if ( $8 > max ) {
- max = $8;
- }
- if ( $8 < min ) {
- min = $8;
- }
- if ( $11 > maxi ) {
- maxi = $11;
- }
- if ( $11 < mini ) {
- mini = $11;
- }
- }
-
- # {}
-
- function prline() {
- if ( cnt != 0 ) {
- printf "%4d %3d 1 %cM%c%c %4d %6d %3d 5.2 %c %3s %6.2f %5.2f\n", ndisks, ndisks/4, rawefs, async, direct, nthrd, xfrsz, stepsz, xfrtyp, sr, (mbs-max-min)/(cnt-2), (iops-maxi-mini)/(cnt-2);
- }
- cnt = 0; max=0.0; min=1000.1; maxi=0.0; mini=1000.1;
- mbs=0.0; iops=0.0;
- }
-
- END {
- prline();
- }
-
- EOF
- sed -e 's/[()]//g' -e 's/^------* /#TITLE /' -e 's/^\(#TITL.*\) -----*$/\1/' $1 | nawk -f /usr/tmp/d.awk$$ |tee /usr/tmp/d.res$$
- rm -f /usr/tmp/d.awk$$
- #Split into perf.dwb, perf.dwt, perf.ewb, perf.ewt, perf.rwb, perf.rwt.
- sed -e '1,/^Reg.*buffer/d' -e '1,2d' -e '/^$/,$d' /usr/tmp/d.res$$|sort -n >perf.ewt
- sed -e '1,/^Reg.*through/d' -e '1,2d' -e '/^$/,$d' /usr/tmp/d.res$$|sort -n >perf.ewb
- sed -e '1,/^Raw.*buffer/d' -e '1,2d' -e '/^$/,$d' /usr/tmp/d.res$$|sort -n >perf.rwb
- sed -e '1,/^Raw.*through/d' -e '1,2d' -e '/^$/,$d' /usr/tmp/d.res$$|sort -n >perf.rwt
- sed -e '1,/^Dir.*buffer/d' -e '1,2d' -e '/^$/,$d' /usr/tmp/d.res$$|sort -n >perf.dwb
- sed -e '1,/^Dir.*through/d' -e '1,2d' -e '/^$/,$d' /usr/tmp/d.res$$|sort -n >perf.dwt
- #Start of graph ------------------------------------------------
- #Start of write graph ------------------------------------------------
- cat <<EOF >graph.bw
- #!/bin/sh
- exec xgraph -t "Write" -x "# of disks" -y "MBytes/sec" <<EOD
- "Direct write buffered"
- 0 0.0
- EOF
- grep '^ .* W ' perf.dwb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.bw
- cat <<EOF >>graph.bw
-
- "Direct write through"
- 0 0.0
- EOF
- grep '^ .* W ' perf.dwt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.bw
- cat <<EOF >>graph.bw
-
- "Raw write buffered"
- 0 0.0
- EOF
- grep '^ .* W ' perf.rwb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.bw
- cat <<EOF >>graph.bw
-
- "Raw write through"
- 0 0.0
- EOF
- grep '^ .* W ' perf.rwt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.bw
- cat <<EOF >>graph.bw
-
- "EFS write buffered"
- 0 0.0
- EOF
- grep '^ .* W ' perf.ewb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.bw
- cat <<EOF >>graph.bw
-
- "EFS write through"
- 0 0.0
- EOF
- grep '^ .* W ' perf.ewt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.bw
- cat <<EOF >>graph.bw
-
- EOD
- EOF
- chmod 755 graph.bw
- ./graph.bw&
- #End of Write graph ------------------------------------------------
- #Start of Read graph ------------------------------------------------
- cat <<EOF >graph.br
- #!/bin/sh
- exec xgraph -t "Read" -x "# of disks" -y "MBytes/sec" <<EOD
- "Direct write buffered"
- 0 0.0
- EOF
- grep '^ .* R ' perf.dwb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.br
- cat <<EOF >>graph.br
-
- "Direct write through"
- 0 0.0
- EOF
- grep '^ .* R ' perf.dwt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.br
- cat <<EOF >>graph.br
-
- "Raw write buffered"
- 0 0.0
- EOF
- grep '^ .* R ' perf.rwb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.br
- cat <<EOF >>graph.br
-
- "Raw write through"
- 0 0.0
- EOF
- grep '^ .* R ' perf.rwt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.br
- cat <<EOF >>graph.br
-
- "EFS write buffered"
- 0 0.0
- EOF
- grep '^ .* R ' perf.ewb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.br
- cat <<EOF >>graph.br
-
- "EFS write through"
- 0 0.0
- EOF
- grep '^ .* R ' perf.ewt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.br
- cat <<EOF >>graph.br
-
- EOD
- EOF
- chmod 755 graph.br
- ./graph.br&
- #End of Read graph ------------------------------------------------
- #Start of Create graph ------------------------------------------------
- cat <<EOF >graph.bc
- #!/bin/sh
- exec xgraph -t "Create" -x "# of disks" -y "MBytes/sec" <<EOD
- "Direct write buffered"
- 0 0.0
- EOF
- grep '^ .* C ' perf.dwb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.bc
- cat <<EOF >>graph.bc
-
- "Direct write through"
- 0 0.0
- EOF
- grep '^ .* C ' perf.dwt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.bc
- cat <<EOF >>graph.bc
-
- "EFS write buffered"
- 0 0.0
- EOF
- grep '^ .* C ' perf.ewb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.bc
- cat <<EOF >>graph.bc
-
- "EFS write through"
- 0 0.0
- EOF
- grep '^ .* C ' perf.ewt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.bc
- cat <<EOF >>graph.bc
-
- EOD
- EOF
- chmod 755 graph.bc
- ./graph.bc&
- #End of Create graph ------------------------------------------------
- #Start of dwb graph ------------------------------------------------
- cat <<EOF >graph.dwb
- #!/bin/sh
- exec xgraph -t "Direct Write Buffered" -x "# of disks" -y "MBytes/sec" <<EOD
- "Write"
- 0 0.0
- EOF
- grep '^ .* W ' perf.dwb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.dwb
- cat <<EOF >>graph.dwb
-
- "Read"
- 0 0.0
- EOF
- grep '^ .* R ' perf.dwb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.dwb
- cat <<EOF >>graph.dwb
-
- "Create"
- 0 0.0
- EOF
- grep '^ .* C ' perf.dwb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.dwb
- cat <<EOF >>graph.dwb
-
- EOD
- EOF
- chmod 755 graph.dwb
- ./graph.dwb&
- #End of dwb graph ------------------------------------------------
- #Start of dwt graph ------------------------------------------------
- cat <<EOF >graph.dwt
- #!/bin/sh
- exec xgraph -t "Direct Write Through" -x "# of disks" -y "MBytes/sec" <<EOD
- "Write"
- 0 0.0
- EOF
- grep '^ .* W ' perf.dwt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.dwt
- cat <<EOF >>graph.dwt
-
- "Read"
- 0 0.0
- EOF
- grep '^ .* R ' perf.dwt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.dwt
- cat <<EOF >>graph.dwt
-
- "Create"
- 0 0.0
- EOF
- grep '^ .* C ' perf.dwt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.dwt
- cat <<EOF >>graph.dwt
-
- EOD
- EOF
- chmod 755 graph.dwt
- ./graph.dwt&
- #End of dwt graph ------------------------------------------------
- #Start of ewb graph ------------------------------------------------
- cat <<EOF >graph.ewb
- #!/bin/sh
- exec xgraph -t "EFS Write buffered" -x "# of disks" -y "MBytes/sec" <<EOD
- "Write"
- 0 0.0
- EOF
- grep '^ .* W ' perf.ewb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.ewb
- cat <<EOF >>graph.ewb
-
- "Read"
- 0 0.0
- EOF
- grep '^ .* R ' perf.ewb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.ewb
- cat <<EOF >>graph.ewb
-
- "Create"
- 0 0.0
- EOF
- grep '^ .* C ' perf.ewb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.ewb
- cat <<EOF >>graph.ewb
-
- EOD
- EOF
- chmod 755 graph.ewb
- ./graph.ewb&
- #End of ewb graph ------------------------------------------------
- #Start of ewt graph ------------------------------------------------
- cat <<EOF >graph.ewt
- #!/bin/sh
- exec xgraph -t "EFS Write through" -x "# of disks" -y "MBytes/sec" <<EOD
- "Write"
- 0 0.0
- EOF
- grep '^ .* W ' perf.ewt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.ewt
- cat <<EOF >>graph.ewt
-
- "Read"
- 0 0.0
- EOF
- grep '^ .* R ' perf.ewt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.ewt
- cat <<EOF >>graph.ewt
-
- "Create"
- 0 0.0
- EOF
- grep '^ .* C ' perf.ewt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.ewt
- cat <<EOF >>graph.ewt
-
- EOD
- EOF
- chmod 755 graph.ewt
- ./graph.ewt&
- #End of ewt graph ------------------------------------------------
- #Start of rwt graph ------------------------------------------------
- cat <<EOF >graph.rwt
- #!/bin/sh
- exec xgraph -t "Raw Write Through" -x "# of disks" -y "MBytes/sec" <<EOD
- "Write"
- 0 0.0
- EOF
- grep '^ .* W ' perf.rwt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.rwt
- cat <<EOF >>graph.rwt
-
- "Read"
- 0 0.0
- EOF
- grep '^ .* R ' perf.rwt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.rwt
- cat <<EOF >>graph.rwt
-
- EOD
- EOF
- chmod 755 graph.rwt
- ./graph.rwt&
- #End of rwt graph ------------------------------------------------
- #Start of rwb graph ------------------------------------------------
- cat <<EOF >graph.rwb
- #!/bin/sh
- exec xgraph -t "Raw Write Buffered" -x "# of disks" -y "MBytes/sec" <<EOD
- "Write"
- 0 0.0
- EOF
- grep '^ .* W ' perf.rwb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.rwb
- cat <<EOF >>graph.rwb
-
- "Read"
- 0 0.0
- EOF
- grep '^ .* R ' perf.rwb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.rwb
- cat <<EOF >>graph.rwb
-
- EOD
- EOF
- chmod 755 graph.rwb
- ./graph.rwb&
- #End of rwb graph ------------------------------------------------
- rm -f /usr/tmp/d.res$$
- exit 0
-
-